home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / JFC.bin / JRadioButton.java < prev    next >
Text File  |  1998-06-30  |  7KB  |  207 lines

  1. /*
  2.  * @(#)JRadioButton.java    1.42 98/02/27
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not disclose
  8.  * such Confidential Information and shall use it only in accordance with the
  9.  * terms of the license agreement you entered into with Sun.
  10.  * 
  11.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  12.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  13.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
  14.  * OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
  15.  * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
  16.  * ITS DERIVATIVES.
  17.  * 
  18.  */
  19. package com.sun.java.swing;
  20.  
  21. import java.awt.*;
  22. import java.awt.event.*;
  23. import com.sun.java.swing.plaf.*;
  24. import com.sun.java.swing.plaf.*;
  25. import com.sun.java.accessibility.*;
  26.  
  27. /**
  28.  * An implementation of a radio button -- an item that can be selected or
  29.  * deselected, and which displays its state to the user.
  30.  * Used with a ButtonGroup object to create a group of buttons
  31.  * in which only one button at a time can be selected. (Create a ButtonGroup
  32.  * object and use its <code>add</code> method to include the JRadioButton objects
  33.  * in the group.)
  34.  * <p>
  35.  * See <a href="http://java.sun.com/docs/books/tutorial/ui/swing/radiobutton.html">How to Use Radio Buttons</a>
  36.  * in <a href="http://java.sun.com/Series/Tutorial/index.html"><em>The Java Tutorial</em></a>
  37.  * for further documentation.
  38.  * <p>
  39.  * For the keyboard keys used by this component in the standard Look and
  40.  * Feel (L&F) renditions, see the
  41.  * <a href="doc-files/Key-Index.html#JRadioButton">JRadioButton</a> key assignments.
  42.  * <p>
  43.  * Warning: serialized objects of this class will not be compatible with
  44.  * future swing releases.  The current serialization support is appropriate
  45.  * for short term storage or RMI between Swing1.0 applications.  It will
  46.  * not be possible to load serialized Swing1.0 objects with future releases
  47.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  48.  * baseline for the serialized form of Swing objects.
  49.  * 
  50.  * @beaninfo
  51.  *   attribute: isContainer false
  52.  * @see ButtonGroup
  53.  * @see JCheckBox
  54.  * @version 1.42 02/27/98
  55.  * @author Jeff Dinkins
  56.  */
  57. public class JRadioButton extends JToggleButton implements Accessible {
  58.  
  59.     /**
  60.      * Creates an initially unselected radio button
  61.      * with no set text.
  62.      */
  63.     public JRadioButton () {
  64.         this(null, null, false);
  65.     }
  66.      
  67.     /**
  68.      * Creates an initially unselected radio button
  69.      * with the specified image but no text.
  70.      *
  71.      * @param icon  the image that the button should display
  72.      */
  73.     public JRadioButton(Icon icon) {
  74.         this(null, icon, false);
  75.     }
  76.  
  77.     /**
  78.      * Creates a radio button with the specified image
  79.      * and selection state, but no text.
  80.      *   
  81.      * @param icon  the image that the button should display
  82.      * @param selected  if true, the button is initially selected;
  83.      *                  otherwise, the button is initially unselected
  84.      */
  85.     public JRadioButton(Icon icon, boolean selected) {
  86.         this(null, icon, selected);
  87.     }
  88.     
  89.     /**
  90.      * Creates an unselected radio button with the specified text.
  91.      * 
  92.      * @param text  the string displayed on the radio button
  93.      */
  94.     public JRadioButton (String text) {
  95.         this(text, null, false);
  96.     }
  97.  
  98.     /**
  99.      * Creates a radio button with the specified text
  100.      * and selection state.
  101.      * 
  102.      * @param text  the string displayed on the radio button
  103.      * @param selected  if true, the button is initially selected;
  104.      *                  otherwise, the button is initially unselected
  105.      */
  106.     public JRadioButton (String text, boolean selected) {
  107.         this(text, null, selected);
  108.     }
  109.  
  110.     /**
  111.      * Creates a radio button that has the specified text and image,
  112.      * and that is initially unselected.
  113.      *
  114.      * @param text  the string displayed on the radio button 
  115.      * @param icon  the image that the button should display
  116.      */
  117.     public JRadioButton(String text, Icon icon) {
  118.         this(text, icon, false);
  119.     }
  120.  
  121.     /**
  122.      * Creates a radio button that has the specified text, image,
  123.      * and selection state.
  124.      *
  125.      * @param text  the string displayed on the radio button 
  126.      * @param icon  the image that the button should display
  127.      */
  128.     public JRadioButton (String text, Icon icon, boolean selected) {
  129.         super(text, icon, selected);
  130.         setBorderPainted(false);
  131.         setHorizontalAlignment(LEFT);
  132.     }
  133.  
  134.  
  135.     /**
  136.      * Notification from the UIFactory that the L&F
  137.      * has changed. 
  138.      *
  139.      * @see JComponent#updateUI
  140.      */
  141.     public void updateUI() {
  142.         setUI((ButtonUI)UIManager.getUI(this));
  143.     }
  144.     
  145.  
  146.     /**
  147.      * Returns the name of the L&F class
  148.      * that renders this component.
  149.      *
  150.      * @return String "RadioButtonUI"
  151.      * @see JComponent#getUIClassID
  152.      * @see UIDefaults#getUI
  153.      * @beaninfo
  154.      *        expert: true
  155.      *   description: A string that specifies the name of the L&F class.
  156.      */
  157.     public String getUIClassID() {
  158.         return "RadioButtonUI";
  159.     }
  160.  
  161.  
  162. /////////////////
  163. // Accessibility support
  164. ////////////////
  165.  
  166.  
  167.     /**
  168.      * Get the AccessibleContext associated with this JComponent
  169.      *
  170.      * @return the AccessibleContext of this JComponent
  171.      * @beaninfo
  172.      *       expert: true
  173.      *  description: The AccessibleContext associated with this Button
  174.      */
  175.     public AccessibleContext getAccessibleContext() {
  176.         if (accessibleContext == null) {
  177.             accessibleContext = new AccessibleJRadioButton();
  178.         }
  179.         return accessibleContext;
  180.     }
  181.  
  182.     /**
  183.      * The class used to obtain the accessible role for this object.
  184.      * <p>
  185.      * Warning: serialized objects of this class will not be compatible with
  186.      * future swing releases.  The current serialization support is appropriate
  187.      * for short term storage or RMI between Swing1.0 applications.  It will
  188.      * not be possible to load serialized Swing1.0 objects with future releases
  189.      * of Swing.  The JDK1.2 release of Swing will be the compatibility
  190.      * baseline for the serialized form of Swing objects.
  191.      */
  192.     protected class AccessibleJRadioButton extends AccessibleJToggleButton {
  193.  
  194.         /**
  195.          * Get the role of this object.
  196.          *
  197.          * @return an instance of AccessibleRole describing the role of the object
  198.          * @see AccessibleRole
  199.          */
  200.         public AccessibleRole getAccessibleRole() {
  201.             return AccessibleRole.RADIO_BUTTON;
  202.         }
  203.  
  204.     } // inner class AccessibleJRadioButton
  205. }
  206.   
  207.